#define _CRT_SECURE_NO_WARNINGS 1

#include <iostream>
using namespace std;

//class A {};
//class B : public A {};
//
//class Person 
//{
//public:
//	virtual A* fc() { return new A; }
//};
//class Student : public Person {
//public:
//	virtual B* fc() { return new B; }
//};
//
//void main()
//{}


//class A
//{
//public:
//	virtual void func(int val = 1) { std::cout << "A->" << val << std::endl; }
//	virtual void test() { func(); }
//};
//
//class B : public A
//{
//public:
//	 void func(int val = 0) { std::cout << "B->" << val << std::endl; }
//};
//
//int main(int argc, char* argv[])
//{
//	B* p = new B;
//	p->test();
//	return 0;
//}

class A
{
public:
	virtual void func() {
		cout << "A func";
	}
	
	virtual void test(){
		cout << "A test";
	}

	void KD()
	{
		cout << "KD";
	}
	
	int a;
	char c;
};

class B : public A
{
	virtual void func(){
		cout << "B func";
	 }

	// virtual void test(){}
};

void main()
{  
	A a;
	B b;
	b.KD();
}


